home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
United Public Domain Gold 2
/
United Public Domain Gold 2.iso
/
utilities
/
pu193.dms
/
pu193.adf
/
MandelVroom
/
Mandvroom.doc
< prev
next >
Wrap
Text File
|
1992-04-03
|
31KB
|
742 lines
PURPOSE
This document introduces you to MandelVroom, outlines it's features,
and tells you how to use it.
READINGS
For a good explanation of Mandlebrot calculations, I recommend you
look up the Computer Recreations column in the August 1985 edition
of Scientific American magazine.
You may want to read a book written by Dr. Benoit Mandelbrot, called
"The Fractal Geometry of Nature", published by W. H. Freeman and Company.
Dr. Heinz-Otto Peitgen and Dr. Peter Richter have written a very nice
book called "The Beauty of Fractals". It is published by Springer-Verlag.
It has a some very nice pictures and is a good navigational guide. I
recomend it.
INTRODUCTION
This program lets you navigate around the complex plane generating
Mandelbrot pictures. Picture data is saved in RAM allowing you to
quickly recolor pictures using a powerful coloration mechanism.
Once you've generated and recolored a picture, you can save it on
disk in one of two formats: ILBM and MAND. ILBM files are in IFF format.
MAND files contain everything needed to recreate the picture. It can
take a long time to calculate Mandelbrot pictures. MAND files allow
you to save this precious data on disk.
MandleVroom also has these features:
- Assembly language 32 bit fixed point Mandlebrot picture generator
- Assembly language Fast Floating Point Mandlebrot picture generator
- Picture presets
- Color palette
- Contour palette
- Mouse and graphics oriented user interface
- High resolution, interlace and halfbrite graphics modes supported
- Configurable number of bit planes
- Source in public domain
TERMINOLOGY
You need to know the following concepts to use this program:
- Generators and Generation
- Navigation and Zooming
- Aspect Ratios
- Contours and Altitudes
- Pens and Colors
GENERATORS AND GENERATION
The generators perform Mandelbrot calculations over regions of the
complex plane. The generators produce a two dimesional array of
iteration counts. MandelVroom treats these iteration counts as
altitudes. You can use this program to navigate around the complex
plane choosing regions to generate pictures over.
Using preset locations as starting points, you can generate pictures.
Once generated, you select a region within the picture that you want as
the next picture. When you start the generator, you 'zoom into' the
new location in the complex plane.
ASPECT RATIOS
An aspect ratio is the ratio between the width and height of a rectangle.
A square is a rectangle with a one to one aspect ratio. The pixels on
your screen have an aspect ratio that varies depending on graphics mode
you are using. MandelVroom takes the aspect ratios of the pixels into
account when calculating pictures.
Some Mandelbrot programs allow you to strech either the X or the Y
axis. In this case, a square picture window would not represent a square
region in the complex plane. MandelVroom will not allow you to do this.
CONTOURS AND ALTITUDES
Map makers often use color to indicate altitude in when making contour
maps. Contour maps usually have a 'key' indicating what colors relate
to which altitude. MandelVroom treats iteration count as altitude.
It has a programmable key allowing you to assign pen numbers to ranges
of altitudes.
MandlVroom's programmable key is called the Contour Palette. The Contour
Palette contains thirty two contours. You can use the thirty two contours'
heights and colors to control the distribution of colors in your picture.
PENS AND COLORS
MandelVroom supports low resolution, high resolution, non-interlace,
interlace, and half brite graphics modes. In these graphics modes,
the Amiga uses a hardware color indirection method for graphics
display. The Amiga hardware contains thirty two pens that can be filled
with one of 4096 colors. The following chart show how many pens
the Amiga hardware supports for each graphics node.
Graphics Mode Number of Pens
---------------- -----------------
High Resolution 16
Low Resolution 32
Half Brite 64
Please note that interlace does not affect the number of pens available to
you.
MandelVroom has a Color Palette that allows you to copy, blend and
exchange colors in the Amiga's color registers.
STARTING MANDELBROT
This version of MandelVroom can only be run from the CLI.
To start the program, type:
MandelVroom
When the program starts, it opens a custom screen and a Picture
window. It then generates a picture of the main Mandelbrot set.
It will take a minute or two it to calculate this picture.
THE MAIN MANDELBROT SET
The black region in the middle of the picture is the Mandelbrot set.
The bright area surrounding the Mandelbrot set is the place to explore.
The darker regions outside the bright areas are of little interest.
They are dark so they don't distract you from the interesting areas.
NAVIGATION
The Mandelbrot set is inside a circle of radius two, ceneterd about
the origin of the complex plane. The rectangular Picture window
represents a rectangular region on the complex plane. The pictures
that MandelVroom generates depend on the regions you pick in the
complex plane.
MandelVroom generates pictures in the Picture window. You can
choose regions within the current picture to be the boundaries for
the next picture. When you generate, you will produce a big picture
of the new region. This is nicknamed 'zooming'.
ZOOMING IN
There are three steps to zooming in.
1. Select a region for the next picture
2. Resize the Picture window if you like
3. Generate a new picture
You select a region of the current picture using the Zoom Box. The
Zoom Box is a resizable and movable rectangle you use to box in a region
for the next picture.
THE ZOOM BOX
You place, move, resize and close the Zoom Box using the mouse. The
following steps will open the Zoom Box in the Picture window:
1. Pull down the Zoom Box item's Open sub-item
2. Place the mouse cursor in your Mandelbrot picture.
3. Depress and hold the left mouse button
4. Drag the mouse down and to the right
5. Release the left mouse button.
The Zoom Box is a stick figure of an Intuition window. The Zoom Box
has a drag bar, resize gadget, and a close gadget. The drag bar and
close gadgets are at the top of the Zoom Box. The resize gadget is in
the lower right hand corner of the Zoom Box.
The Zoom Box looks like this:
+--- Close Gadget +--- Drag Bar
| |
v v
+-----+----------------------------------+
| | |
| | |
+-----+----------------------------------+
| |
| |
| |
| |
| |
| |
| |
| +---+
| | |<---- Resize Gadget
| | |
+------------------------------------+---+
This is how you move the Zoom Box:
1. Place the mouse cursor in the Zoom Box's drag bar
2. Depress and hold the left mouse button
3. Drag the Zoom Box around with the mouse
4. Release the left mouse button
This is how you resize the Zoom Box:
1. Place the mouse cursor in the Zoom Box's resize gadget.
2. Depress and hold the left mouse button
3. Resize the Zoom Box using the mouse
4. Release the left mouse button
You can close the Zoom Box one of two ways:
1. Press the Zoom Box's close gadget
2. Pull down the Close subitem of the Zoom Box item
If you place a Zoom Box, and then decide you don't want to zoom,
you can close the Zoom Box.
RESIZING THE PICTURE WINDOW
Once you've placed and sized your Zoom Box, you will want to resize
the Picture window to have the same aspect ratio as your Zoom Box. If
you don't, when you generate you may get too little or too much of
the area on the right side of the Zoom Box.
GENERATING NEW PICTURES
If you pull down the Generate item of the Project menu, MandelVroom
will generate a new picture for you. Using the zoom box and the
generator, you can repeatedly zoom in until you find things you
think are interesting.
STOPING THE GENERATORS
Pictures take from minutes to hours to generate. You can stop the
generator by pulling down the Stop item of the Project menu. Once stopped,
the generators can not be restarted, except at the begining of the
picture. Once the generator is stopped, you can proceed as though the
whole picture was calculated.
CHANGING MAGNIFICATIONS
MandelVroom is like a microscope with variable magnification. Every
time you zoom in and generate a new picture, you increase the
magnification of your microscope. You can also change the
magnification by changing the height of the picture window.
Making the picture window taller increases the magnification. Making
the picture window shorter decreases the magnification.
If you make the picture window wider, while not changing it's height,
you will not change magnification factor. You will get a picture
covers a wider piece of the complex plane.
If you want to make a large version of a small picture, all you need
to do is resize the window and generate. You must take care to make
sure the aspect ratio of the original window and the new window are the
same. If you make the picture too narrow, some of the things you want
in the picture may be cut off. If it is too wide, you may have extra
things in your picture.
The same is true for the relative aspect ratios of the zoom box and
the picture window.
GOOD NAVIGATING
This program has nice facilities for zooming into the Mandelbrot set.
It is severly lacking in methods for zooming out. It's saving grace is
that you can save interesting pictures to disk. You can also reload
these pictures and resume zooming. You can use use disk files to
record your journey in search of the ultimate Mandelbrot picture.
File access is discussed in the LOADING AND SAVING section.
The best way to be a good navigator is to practice. Start by generating
a picture of the main Mandelbrot set. Zoom in on the perimiter of
the set. Try not to get too much Mandelbrot in the picture, it takes
a long time to calculate. If you like the picture, you can save it
on disk, and zoom somewhere into the picture. Keep doing this and
you are bound to find something nice.
Good navigating is an art. Good subject placement and framing can make
a world of difference in a picture. Sometimes you want lot's of detailed
real estate in the picture (like a picture of Yosemite Valley.) Other
times you want to isolate and capture a small object (like a picture
of a small flower.)
WHAT'S NEXT
Once you have a picture generated, you probably want to recolor it.
The next section explains how to pick and choose colors for your picture.
PICTURE RECOLORING
You can use the Color Palette and the Contour Palette to recolor a
MandelVroom picture. You can use the Color Palette to affect the
colors in you pens. You can also use the Contour palette to change
the distribution of pens and colors in your picture. The next
section explains the use of the Color Palette. The Contour palette is
discussed in the THE CONTOUR PALETTE section.
THE COLOR PALETTE
You can open the Color palette by pulling down the Color item of the
Edit menu. The color palette looks like this:
+---+-------------------------+---+---+
| . | Color | | |
+---+-------------------------+---+---+
| |
| ++ ++ ++ ++ R G B +---+ |
| ++ ++ ++ ++ | | Copy | <-- copy a pen's color
| ++ +---+ |
| ++ ++ ++ ++ |
| ++ ++ ++ ++ ++ +---+ |
| | | Spread | <-- Spread from pen to pen
| ++ ++ ++ ++ +---+ |
| ++ ++ ++ ++ ++ |
| +---+ |
| ++ ++ ++ ++ | | Exchg | <-- Exchange two pens
| ++ ++ ++ ++ +---+ |
| |
| ++ ++ ++ ++ |
| ++ ++ ++ ++ |
| |
| ++ ++ ++ ++ |
| ++ ++ ++ ++ |
| |
| ++ ++ ++ ++ |
| ++ ++ ++ ++ |
| |
| ++ ++ ++ ++ |
| ++ ++ ++ ++ |
| |
+-------------------------------------+
^ ^ ^ ^ ^
| | | | |
| | +--+--+-- RED/GREEN/BLUE potentiomenters
| |
+--------+- Pens
ADJUSTING PEN COLORS
You can use the Red, Green, and Blue potentiometer gadgets to adjust a
pen's color components. The following steps show you how to change a
pen's color:
1. Click the mouse on the pen you want to modify.
2. Adjust it's color using the R/G/B potentiometer gadgets.
COPYING PEN COLORS
You can copy one pen's color into another pen by performing the following
steps:
1. Click the mouse on the pen you want to copy
2. Click the Copy gadget
3. Click the pen you want to change
SPREADING PEN COLORS
You can create a range of colors between pens (e.g. a range of pens from
dark green to light green) using the Spread gadget. You use the spread
gadget in the following way:
1. Click the mouse on a pen at one end of the range
2. Click the Spread gadget
3. Click the mouse on the pen at the other end of the range
EXCHANGING PEN COLORS
These steps will exchange two pen colors:
1. Click the mouse on one of the pens you want to exhange
2. Click the mouse on the Excg gadget
3. Click the mouse on the other pen
NOTES ON CHANGING PEN COLORS
Be very careful when changing the top four pens in the left most
column of pens. These pens are used by the system to render windows and
screens. If you make these pens the same color, you may have problems
seeing MandelVroom's controls.
The Amiga uses pens 17 through 19 when drawing the mouse cursor. If
change these pens, the cursor may be hard to work with.
The Zoom Box on the picture window is rendered using a drawing mode
called complement. When the system is drawing a line in complement
mode, it negates the pen number in each pixel in the line. If you have
five bit planes, you have thirty two pens. The complement of pen 0 is
pen 31.
It you draw a line in complement mode, you can erase it by drawing the
same line again in complement mode.
If complementary pens have similar colors in them, then object drawn
in complement mode is unnoticable. If you have problems finding your
Zoom Box, check out your pen colors.
THE CONTOUR PALETTE
The Contour Palette is a powerful control mechanism for coloring your
Mandelbrot pictures. It has thirty two contours. Each contour has a pen
and a height. MandelVroom expects to find the contours' heights decreasing
as you traverse the list of contours from 0 to 31. Given this, a contour
actualy represents a range of heights.
Here is an example description of the list of four contours:
Contour Contour Contour Contour
Number Height Pen Range
------- ------- ------- ---------
0 1023 0 1023-1023
1 500 10 1022-500
2 300 1 499-300
3 100 2 299-100
OPENING THE CONTOUR PALETTE
You can open the Contour palette by pulling down the Contour item of
the Edit menu. The Contour Palette looks like this:
+---+-------------------------------------------+--+--+
status line -> | | C: 0 H: 1023 P: 0 | | |
+---+-------------------------------------------+--+--+
| |
set pen or --> | .. .. .. .. .. .. .. .. .. .. Set +---+ |
height gadgets | .. .. .. .. .. .. .. .. .. .. .. | | ReColor|
| +---+ |
increment --> | .. .. .. .. .. .. .. .. .. .. + |
height | .. .. .. .. .. .. .. .. .. .. |
| +---+ |
+-> | .. | | Smooth |
| | .. +---+ |
| | |
| | .. |
| | .. |
height | | Alt. |
potentiomenters | .. |
| | .. |
| | |
| | .. .. .. .. .. .. .. |
+-> | .. .. .. .. .. .. .. |
| |
| |
decrement --> | .. .. .. .. .. .. .. .. .. .. - |
height | .. .. .. .. .. .. .. .. .. .. |
| |
+-----------------------------------------------------+
^ ^ ^ ^
| | | |
+---------- Contours ---------+ | + Commands
0 1 2 ......... 30 31 |
+-- Ceiling
As the generator calculates pictures, it saves the data in RAM. Once
the picture is generated, you can change the Contour Palette and recolor
the picture. When you push the 'ReColor' gadget, MandelVroom traverses
the Mandelbrot data, converting altitude to pen, and plotting pens in the
picture window. This mechanism allows you to recolor the picture quickly
and repeatedly until you are happy with the way it looks.
Each contour has four gadgets: a set gadget, an increment height gadget,
a height potentiometer, and a decrement height gadget.
These are used to modify a given contour's height and/or pen.
SETTING A CONTOUR'S PEN
You can use any pen for any contour. To do this, you must have both the
Contour and Color Palette windows open. To set a contour's pen, click it's
Set gadget and the click a pen in the Color Palette. Notice there is no
change in the Picture window? The change will not take place until you
hit the ReColor gadget of the Contour window.
SETTING A CONTOUR'S HEIGHT
You can set a given contour's height, by adjusting it's potentiometer
gadget. You can use the increment and decrement gadgets to fine tune
contours' heights.
You can also set a given contour's height by clicking it's Set gadget
and clicking a point on the Picture window. The program will look up
the height associated with the pixel you click and use that as the
contour's new height. This is the most useful way of setting a contour's
height.
Height changes do not affect the picture until you press the ReColor
gadget of the Contour window.
NOTES ON CONTOURS
MandelVroom expects contours' heights to decrease as you traverse the
list of contours from 0 to 31. Any contour that does not meet this
expectation is ignored.
SMOOTHING CONTOURS
You can evenly distribute a set of contours' heights by using the
Smooth gadget. This is comparable to the Color palette's Spread
gadget.
Example:
pull the far right contour's potentiometer gadget down to the bottom
(e.g. set that contour's height to 0.) Pull the far left contour's
potentiometer gadget all the way to the top. Click the smooth gadget.
Click the right-most contour's set gadget. All the contours in the
middle change. They are evenly distributed.
Soothing of contours can be done between any two contours. The
contour settings created by the above example do not lend themselves to
very good pictures. You are in charge of deciding what heights and colors
are appropriate for each picture.
A RECOLORING METHOD
The contour method is very powerful for recoloring Mandelbrot
pictures. When starting in to color a new picture, I usually set contour
two to a black pen with zero height. I then vary the height of contour
one until I get the amount of color want. I then restore contour one's
original height and pen. I then set contour thirty one's height to zero.
Using the Smooth command, I evenly distribute all the contours between
contour thirty one and contour one. I then recolor the picture using
the Recolor gadget.
Looking at the colors in the contours and the colors on the picture,
I can find the lowest point in the picture. I set contour thirty one's
height using the picture window. Again I smooth the points between
contour one and contour thirty one, and recolor the picture.
This gives me the height of the highest non-Mandelbrot point in
the picture in contour one. I also have lowest point height in
contour thirty one. This gives me a feel for the distribution of
point's heights in the picture.
THE CEILING GADGET
The potentiometer gadgets serve a couple of purposes. They allow you to
set a given contour's height. They also allow you to see (roughly) what
the contour's height's are.
In most Mandelbrot pictures, very few points
fall in the top half of the possible iteration count range. Typically
by the sixth contour, the remaining potentiometer's are at the same
pixel height in the window (although they have different heights).
The Ceiling gadget allows you to get a better look at the shorter
contours. Move it around and watch what it does. The contour's
potentiometers change, but the contour's height's don't. Comprende?
I have very hard time explaining this one. Moving the ceiling gadget
does not affect the picture. It only affects the display of the
contour's potentiometer gadgets.
I guess the best thing is to just set the ceiling to varous values
until you see what it does.
THE STATUS LINE
There is a status line in the Drag bar of the Contour window. It shows
you information about the current contour. When you select a contour's
select gadget, the program will display the contour number, the contour's
height range and pen in the status line. You can use this to
find out what numbers are in which contours.
SAVING AND LOADING
You can save and load raw Mandlebrot data files on floppies. The
program saves all the data necessary to generate and zoom new pictures.
This can be very usefull for saving your place while you are navigating.
If you zoom in, and don't like it, you can pull where you were off disk.
You can load MAND files using the Project menu's Load item. The Save
item, of the Project menu, has a MAND sub-item that is used to save
MAND files on disk.
SAVING ILBMS
You can save pictures in ILBM format. This allows you to take pictures
from this program and use them in slide shows or in DPaint. You can
save ILBM files by using the ILBM sub-item of the Project menu's Save
item.
CONFIGURING AMIGA GRAPHICS
The program allows you to use many of the Amiga's graphics modes. It
supports: low and high resolutions, non-interlace and interlace, and
halfbrite mode (yes, I have a half bright denice.) The program also
allows you to chose the number of bit planes to use. The number of bit
planes affects the number of pens you can have for coloring Mandelbrot.
You can change the graphics modes of the program by pulling down the
ViewModes item of the Edit menu. The ViewModes item has three sub-items:
HIRES, INTERLACE, and HALFBRITE. These are used to configure ViewModes.
Once you have ViewModes configured, pull down the NewScreen item of the
Project menu. The program will close the old screen and open a new one
with your new specifications.
Beware: HALFBRITE and HIRES are mutually exclusive. The program will
not allow you to configure ViewModes in ways that the Amiga hardware
can't handle.
You can change the number of bit planes using the list of depths
available in the Depth item of the Edit menu. It allows you to use
from 1 to 6 bit planes. Some combinations of Depths and ViewModes
are illegal. HIRES screens can only have four bit planes. HALFBRITE
screens require six bit planes. The program modifies the number of
bit planes to a legal value where required.
GENERATORS
The Mandelbrot set has infinite detail. The Amiga has finite
numerical precision. This precision limits how far down you can zoom
into the Mandelbrot set. This program has two generators: a 32 bit
fixed point generator, and a Motorola Fast Floating Point generator.
They both perform the same Mandelbrot calculations, they just use
different data formats. Both generators are finely tuned, had crafted
assembly. Good performance was the goal.
The 32 bit fixed point generator is considerably faster than the
floating point generator. The fixed point generator can not zoom in
as far as the floating point generator. I use the fixed point generator
until the lack of precision becomes unbearable. I then switch to the
floating point generator. You can switch between fixed point and floating
point generators in the Generator item of the Edit menu.
The floating point generator allows you to configure the number of
iterations done in the Mandelbrot calculation. This is handy for
quicker pictures at lower magnifications. The farther you zoom in,
the higher the iteration count required (generally.) The fixed point
generator always uses 1023 as the maximum iteration count.
PRESET LOCATIONS
This program has a number of preset pictures that I think are very
pretty. The first preset generates a picture of the main Mandelbrot
set. The presets are intended as examples of good navigation and
coloration. I hope you like them. To generate a preset picture, pull
down a preset item and release. The program prepares itself and
generates the picture.
All the presets produce small pictures. If you want to generate
large versions of the presets, you can stop the generator, resize
the picture window, an pull down the Generate item of the Project menu.
SAVING TIME
Mandelbrot calculations take a long time. One way to avoid long
calculation times is to generate small pictures without many points in
the Mandelbrot set. Use small Picture windows while zooming in on
something, then make the Picture window large when you've found
something you really like.
Another interesting way to save time is to not watch the picture
generate. If you are using 5 or more bit planes in low resolution
graphics mode, the video hardware steals memory bus cycles from the
68000. Other graphic modes and bit plane combinations also degrade
68000 performance. When generating somethime, watch the speed of the
generator. Pull the screen down three fourths of the way down the
monitor. See the generator speed up? If you are in a real hurry,
you can pull all the screens down. In this case, the video hardware
hardly uses any memory bus cycles, the only problem is you can't
see anything.
MEMORY HOGGING
This program can consume a lot of memory. It allocates a word of memory
for each pixel in a picture. A 640 by 400 window requires 512K bytes
of memory. If you have a 512K Amiga, you will not be able to generate
full screen interlace or high resolution pictures. You can, however,
generate smaller pictures in these graphic modes.
ADVANCED TOPICS
Mandlebrot calculations are CPU and memory intensive. You can do some
things to reduce memory consumption (LORES, NONINTERLACE, 1 bit plane).
It is hard to reduce the CPU usage. This program can multitask, but
it will interfere with other programs running at the same priority.
You can use the ChangeTaskPri function available under Workbench 1.2
to set Mandelbrot's priority lower than other programs you might want
to run.
You might also notice that not all Mandelbrot pixels take the same
amount of time to calculate. I have a Mandelbrot detection algorithm
in both the fast floating point and fixed point algorithms.
It turns out that the points inside the Mandelbrot set cycle. My
generators use a trace mechanism to detect these rings. If a ring is
detected, then the pixel is Mandelbrot. It saves lots of time when
calculating the main Mandelbrot set. It saves less as you zoom in.
SOMEDAY
I have tons of new ideas and feature that I would like to add.
Some are:
- Fixed point generator sensitive to Max Index
- Double precision fixed point generator
- IEEE floating point generator
- Generator runs as seperate task
- change task priority built into program
- movable magnifying glass generator
- other fractal generators (julia curves....)
- key in generator's maximum iteration counts from the keyboard
- Good zoom out controls
- record a history of points you've been to.
- key in complex plane locations from keyboard
- a 'You are here --->' display feature
- proportional zoom box and picture window controls
- three dimensional rendering
- Many more contours.
- assign a range of colors to a range of contours
- copy contour pen patters into other contours
- Auto-contouring.
- a histogram of altitudes in picture
- Volume-Hue-Saturation controls in color palette
- Color cycling
- borderless picture window/screen
- overscan graphics
- define IFF file format for Raw Mandelbrot information
- less ram usage
- a 68881 (oops! I guess I'll need new hardware)
APOLOGIES
Sorry this document is so big, but I hope helps you understand how
to use the program. I also apologize for any inacuracies in this document.
Sorry for any bugs this program has. I know they can be annoying.
Finally I apologize for all the Amiga CPU time this program will
consume.
AUTHOR
Kevin L. Clague
408 Tortola Way
San Jose, Ca 95133
Home 408-258-9891
Work 408-737-5481